package day01;

import java.util.Arrays;
import java.util.Scanner;

public class Test2 {
    public static void main(String[] args) {
        Scanner num = new Scanner(System.in);
        int n = num.nextInt();
        int[] nums = new int[n];
        for (int i = 0; i < n; i++) {
            nums[i] = num.nextInt();
        }
        int target = num.nextInt();
        System.out.println(searchInsert(nums, target));
    }

    /**
     * 给定一个排序数组和一个目标值，在数组中找到目标值，并返回其索引。如果目标值不存在于数组中，返回它将会被按顺序插入的位置。
     *
     * @param nums
     * @param target
     * @return
     */
    public static int searchInsert(int[] nums, int target) {
/*        int[] temp = new int[nums.length + 1];
        int num = -1;
        for (int i = 0; i < nums.length; i++) {
            temp[i] = nums[i];
        }
        temp[temp.length - 1] = target;
        //排序
        Arrays.sort(temp);
        for (int i = 0; i < temp.length; i++) {
            if (target == temp[i]) {
                num = i;
                break;
            }
        }
        return num;*/

        //更简单的方法，时间
        for (int i = 0; i < nums.length; i++) {
            // 分别处理如下三种情况
            // 目标值在数组所有元素之前
            // 目标值等于数组中某一个元素
            // 目标值插入数组中的位置
            if (nums[i] >= target) {    // 一旦发现大于或者等于target的num[i]，那么i就是我们要的结果
                return i;
            }
        }
        // 目标值在数组所有元素之后的情况
        return nums.length;     //如果target是最大的，或者 nums为空，则返回nums的长度
    }
}
